Inno Setup 5
Revision History
Copyright © 1997-2004 Jordan Russell. All rights reserved.
Portions Copyright © 2000-2004 Martijn Laan. All rights reserved.
For conditions of distribution and use, see LICENSE.TXT.
5.0.4-beta (2004-10-06)
- New [Setup] section directive: ChangesEnvironment. When set to yes, at the end of the installation Setup will notify other running applications (notably Windows Explorer) that they should reload their environment variables from the registry.
- Pascal Scripting changes/improvements:
- The support functions CreateCustomForm, ScaleX, and ScaleY may now be called at uninstall time.
- TRichEditViewer support class improvement: The Color property is now respected.
- /LOG improvements:
- It's now possible to specify a fixed path/filename to use for the log file via /LOG="filename".
- Now logs when various event functions are called, and in the case of InitializeSetup it also logs the return value of the function.
- Now logs when DLL/OCX/type library registration fails, even if the noregerror flag is specified.
- Stretching of the small wizard image (specified by WizardSmallImage) now only occurs if the image is larger than the default size, or if the user is running larger-than-normal fonts. Previously, it always attempted to stretch the image.
- The WizardSmallImageBackColor [Setup] section directive is now deprecated and ignored. Any unused space around the small wizard image is now filled with the standard window color (usually white).
- Relative paths specified in [Icons] section entries are now converted into absolute paths automatically.
- Fix: On Windows XP, folder shortcuts (which were introduced in 5.0.3-beta) showed ".lnk" at the end of them.
- Based on RemObjects Pascal Script SVN code revision 960.
- Minor tweaks.
5.0.3-beta (2004-08-16)
- New supported [Files] section flag uninsnosharedfileprompt, which tells the uninstaller to automatically remove the shared file when its reference count reaches zero instead of asking the user. Must be combined with the sharedfile flag to have an effect.
- New supported [Icons] section flag foldershortcut, which creates a special type of shortcut known as a "Folder Shortcut". Normally, when a shortcut to a folder is present on the Start Menu, clicking the item causes a separate Explorer window to open showing the target folder's contents. In contrast, a "folder shortcut" will show the contents of the target folder as a submenu instead of opening a separate window.
Folder shortcuts are only supported by Windows 2000, Me, and later. On earlier versions of Windows, Setup will fall back to creating a normal shortcut when this flag is used.
- Pascal Scripting changes/improvements:
- The return value of the CreateShellLink function has changed from a Boolean to a String. Now, any failure results in an exception being raised.
- The uninstaller is now capable of removing directories that have the read-only attribute set. (No special flags are needed; this is the default behavior.)
- Based on RemObjects Pascal Script SVN code revision 948.
- The uninstall program's version is now 51.32.0.0.
- Minor tweaks.
5.0.2-beta (2004-08-05)
- Pascal Scripting changes/improvements:
- New GetUILanguage support function.
- Compiler IDE: When a file has been modified outside the editor, offer to reload it.
- Fix: The per-page event functions introduced in 5.0.1 that returned Boolean values didn't work properly.
- Fix: When the overwritereadonly [Files] section flag was used and Setup was unable to remove the read-only attribute from a file (e.g. due to ACL restrictions), it would get stuck in an infinite loop.
- Based on RemObjects Pascal Script SVN code revision 947.
5.0.1-beta (2004-08-02)
- Compiler IDE: the toolbar now uses a modern looking set of images kindly donated by glyFX.
- Setup/Uninstall can now wait on processes spawned using [Run]/[UninstallRun] entries that have the shellexec flag. Combine shellexec with either the new waituntilterminated flag (the default behavior when shellexec isn't specified) or the waituntilidle flag.
- When Setup is running on Windows NT 4.0, Service Pack 6 is now required. This change shouldn't impact any significant number of users; SP6 was released five years ago, and almost all other programs that still support NT 4.0 nowadays have the same requirement.
- Pascal Scripting changes/improvements:
- Added new supported event function CancelButtonClick, which is called when the user clicks the Cancel button.
- The prototype of the CurStepChanged function has changed, as has the names of the CurStep values passed to it. See the help file for details.
- The names of the values passed to the CurUninstallStepChanged function have changed. See the help file for details.
- Per-page event functions are now supported. TWizardPage and its descendants now include these properties: OnActivate, OnBackButtonClick, OnCancelButtonClick, OnNextButtonClick, OnShouldSkipPage. See the Support Classes Reference topic in the help file for the prototypes of these event functions.
- Replaced the InstExec function with a new function named Exec. The new function offers the same functionality as the old one, but uses a slightly different prototype. The WaitUntilTerminated and WaitUntilIdle parameters have been replaced with a single Wait parameter.
- Replaced the InstShellExec function with a new function named ShellExec. The new function adds Verb and Wait parameters. To get ShellExec to behave the same way as the old function, specify 'open' in the Verb parameter and ewNoWait in the Wait parameter.
- Replaced the FindFirst and FindNext support functions with new versions that return more information about found files and can handle nested searches. Any existing scripts that called these functions will need updating. There is also a new FindClose function that you should call at the end of a find sequence.
- Replaced the confusingly-named ShouldProcessEntry support function with new functions named IsComponentSelected and IsTaskSelected.
- The Wizard* support functions now raise exceptions if you call them before the wizard has been initialized, instead of returning empty strings.
- On a file that has the uninsrestartdelete flag the containing directory will now also be removed at uninstall time.
- When extracting files, Setup now sets just the modification times instead of the creation and modification times.
- /LOG improvement: Now logs permission setting on files/directories/registry keys.
- The compiler now flags UXTHEME.DLL as an "unsafe" file.
- Dropped the obsolete WizModernImage2.bmp and WizModernSmallImage2.bmp images.
- Based on RemObjects Pascal Script SVN code revision 945.
- The uninstall program's version is now 51.31.0.0.
- Minor tweaks.
5.0.0-beta (2004-07-14)
- The size of compiled installations has decreased by 22-26 KB from Inno Setup 4.2.7, primarily due to the merging of Setup and Uninstall into a single binary.
- Pascal Scripting can now be used to customize Uninstall:
- Added Uninstall specific event functions InitializeUninstall, DeinitializeUninstall, CurUninstallStepChanged and UninstallNeedRestart.
- Added support functions IsUninstaller and UninstallSilent.
Furthermore, the compiler IDE now supports Uninstall debugging. To debug Uninstall, first run Setup from the IDE, install your application, select Target Uninstall in the Run menu and finally use the debugger functions as normal.
See the help file and the UninstallCodeExample1.iss example script for more information.
- The custom wizard page support has been completely redesigned from the ground up. The new design uses an event-driven model just like standard wizard pages; no longer do you have to write complicated loops to handle sequences of custom pages.
Any existing code utilizing custom wizard pages will need updating; all of the old functions have been replaced. Please see the new Using Custom Wizard Pages topic in the help file and the CodeDlg.iss and CodeClasses.iss example scripts for examples of how to use the new custom wizard page model.
- Besides space separated lists, you may now also use boolean expressions as Components, Tasks, Languages and Check parameters. Supported operators include not, and, and or. For example:
[Components]
Name: a; Description: a
Name: b; Description: b
[Tasks]
Name: p; Description: a or b; Components: a or b
Name: q; Description: a and b; Components: a and b
Name: r; Description: not a or b; Components: not a or b
Name: s; Description: not (a or b); Components: not (a or b)
Name: t; Description: a or b - old style; Components: a b
- This syntax of function parameters in Check, BeforeInstall and AfterInstall parameters has changed to allow a list of multiple, comma separated, parameters and the use of Integer and Boolean parameter types besides String types. For example, you may now use:
[Files]
Source: MyProg.exe; DestDir: {app}; Check: MyCheck(1, True, 'Some text')
[Code]
function MyCheck(I: Integer; B: Boolean; S: String): Boolean;
begin
Result := (I > 0) and B and (S <> '');
end;
Also, there's one support function that may be called from within a parameter list: ExpandConstant. For example:
[Files]
Source: MyProg.exe; DestDir: {app}; Check: MyCheck(1, True, ExpandConstant('{app}'))
Existing scripts using function parameters will need to be updated.
- The functions specified by {code:...} constants and by Check, BeforeInstall and AfterInstall parameters may now refer to support functions too, for example:
[Components]
Name: adminonly; Description: My Admin Only Component; Check: IsAdminLoggedOn
[Files]
Source: MyProg.exe; DestDir: {app}; BeforeInstall: Log('About to install MyProg.exe')
Source: MyProg.hlp; DestDir: {app}\Help; Check: DirExists(ExpandConstant('{app}\Help'))
[INI]
FileName: {app}\MyIni.ini; Section: MySettings; Key: ShortApp; String: {code:GetShortName|{app}}
FileName: {app}\MyIni.ini; Section: MySettings; Key: AppDrive; String: {code:ExtractFileDrive|{app}}
- Wizard-related event functions such as NextButtonClick are now called on silent installs as well. In fact, silent installs now function almost identically to non-silent ones with the exception that the Next button is automatically "clicked".
- Logging improvements:
- The filenames of programs spawned in the [Run] section are now logged.
- The /LOG parameter is now also supported by Uninstall, which causes Uninstall to create a log file in the user's TEMP directory detailing file uninstallation and [UninstallRun] actions taken during the uninstallation process. This can be a helpful debugging aid. See the Uninstall Command Line Parameters topic in the help file for further details.
- A new ShouldSkipPage event function has been added, which replaces SkipCurPage. Existing scripts that contain a SkipCurPage function will need to be updated. Note that unlike the old SkipCurPage event function, the page passed to the ShouldSkipPage function is not the current page.
- Added support function Abort. Calling Abort throws an exception to abort the current operation. It does not terminate Setup or Uninstall unless it's still starting up.
- When extracting a file, Setup now pre-allocates all of the bytes in the destination file on disk. This allows the system to know what the final size of the file will be before extraction begins, and avoid fragmenting it.
- The compiler now fully supports script files that use Unix-style line breaks (LF only).
- The Setup section directive UninstallIconFile is now deprecated and ignored. As Setup and Uninstall have been merged into a single executable, setting a custom icon for Uninstall is no longer possible.
- The Setup section directive UninstallStyle is now deprecated and ignored. Only the "modern" uninstaller style is supported now.
- Based on RemObjects Pascal Script SVN code revision 933.
- The uninstall program's version is now 51.30.0.0.
- A very large number of minor tweaks.
- This version is derived from Inno Setup 4.2.7, and therefore includes all of the features and fixes from that version.
Inno Setup 4.2 & 4.1 Revision History